home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / mint / mntlib25 / alloca.s < prev    next >
Text File  |  1992-09-29  |  509b  |  25 lines

  1. #APP
  2. #  alloca(nbytes) allocate junk in stack frame
  3. #
  4. #  void *alloca(size_t size)
  5.  
  6.     .text
  7.      .even
  8.  
  9. .globl    _alloca
  10. _alloca:
  11.     movel    sp@+,a0        | get return addr
  12.     movel    sp@+,d0        | get size -- assist in bug fix, add 4 to sp
  13.  
  14.     addql    #1,d0        | ensure address even
  15.     bclr    #0,d0        | lop off odd bit
  16.  
  17.     subl    d0,sp        | increase stack frame size by that much
  18.     movel    sp,d0        | set up to return it
  19.  
  20.     lea    sp@(-4),sp    | new top of stack (real bug fix here)
  21.  
  22.     jmp    a0@        | return by jmping via saved addr
  23.